package com.intelligent.mapper;

import com.intelligent.pojo.ProductionPlans;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.Date;

/**
* @author lenovo
* @description 针对表【production_plans(生产计划表)】的数据库操作Mapper
* @createDate 2025-09-04 08:41:34
* @Entity com.intelligent.pojo.ProductionPlans
*/
public interface ProductionPlansMapper extends BaseMapper<ProductionPlans> {

    /**
     * 分页查询生产计划（包含用户信息）
     * @param page 分页对象
     * @param planNo 计划编号
     * @param planStatus 计划状态
     * @param sourceType 来源类型
     * @param urgentStatus 加急状态
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param username 负责人用户名
     * @return 分页结果
     */
    IPage<ProductionPlans> selectProductionPlansWithUser(Page<ProductionPlans> page,
                                                         @Param("planNo") String planNo,
                                                         @Param("planStatus") Integer planStatus,
                                                         @Param("sourceType") Integer sourceType,
                                                         @Param("urgentStatus") Integer urgentStatus,
                                                         @Param("startTime") Date startTime,
                                                         @Param("endTime") Date endTime,
                                                         @Param("username") String username);

    /**
     * 插入生产计划
     * @param productionPlans 生产计划对象
     * @return 影响行数
     */
    int insertProductionPlan(ProductionPlans productionPlans);

    /**
     * 根据计划编号更新生产计划
     * @param productionPlans 生产计划对象
     * @return 影响行数
     */
    int updateProductionPlanByPlanNo(ProductionPlans productionPlans);

    /**
     * 根据计划编号删除生产计划
     * @param planNo 计划编号
     * @return 影响行数
     */
    int deleteProductionPlanByPlanNo(@Param("planNo") String planNo);

    /**
     * 根据ID查询生产计划（包含用户信息）
     * @param id 记录ID
     * @return 生产计划对象
     */
    ProductionPlans selectProductionPlanByIdWithUser(@Param("id") Long id);
}




